import axios from 'axios';
import { message, Modal } from 'ant-design-vue'
const Server = axios.create({
    baseURL: process.env.VUE_APP_API_BASE_URL,//域名地址
    headers: {
        'Content-Type': "application/json; charset=utf-8",
    },
    timeout: 10000,//超时时间 10s
});

// 添加请求拦截器
Server.interceptors.request.use(function (config) {


    // 在请求头上缀入token
    if (localStorage.getItem('token')) {
        config.headers.common["authorization"] = 'Bearer ' + localStorage.getItem('token');
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    message.error('系统提示')
    console.log("========>", error);
    return Promise.reject(error);
});

// 添加响应拦截器
Server.interceptors.response.use(function (response) {
    console.log(response.data);
    // 对响应数据做点什么
    return response;
}, function (error) {

    if (error.message.includes('timeout')) {   // 判断请求异常信息中是否含有超时timeout字符串
        message.error('请求超时，请检查网络或稍后再试 ！')
        return Promise.reject(error);          // reject这个错误信息
    }
    if (error.response) {
        // 对响应错误做点什么
        switch (error.response.status) {
            case 403:
                message.error('拒绝访问')
                break
            case 500:
                message.error('很抱歉，登录已过期，请重新登录')
                localStorage.clear();
                sessionStorage.clear()
                setTimeout(() => {
                    window.location.reload()
                }, 1000)
                break
            case 404:
                message.error('很抱歉，资源未找到!')
                break
            case 405:
                message.error('请求方式错误！')
                break
            case 504:
                message.error('网络超时')
                break
            case 401:
                message.error('未授权，请重新登录')
                localStorage.clear();
                sessionStorage.clear()
                setTimeout(() => {
                    window.location.reload()
                }, 1000)
                break
            default:
                message.error('请检查网络或服务端错误')
                break
        }
    }

    console.log("========>", error);
    return Promise.reject(error);
});

export default Server
